package la.iok.hzsvn.lewin.movie.config;

import la.iok.hzsvn.lewin.movie.core.Token;
import la.iok.hzsvn.redis.config.RedisKeyProperties;
import la.iok.hzsvn.share.annotations.NotNull;
import org.springframework.stereotype.Service;

@Service
public class RedisKey {
    private final String keyPrefix;
    public RedisKey(RedisKeyProperties properties){
        //mv表示movie服务
        keyPrefix = properties.getKeyPrefix() + ":mv:";
    }

    /**
     * 进度任务key
     * @param id 任务id,一般为uuid
     * @return 进度任务key
     */
    public String progressTaskKey(@NotNull String id){
        return keyPrefix + "p:t:" + id;
    }

    /**
     * 下载剧本的时候，记录当前令牌下载的是哪个剧本的实例
     * @param token 令牌
     * @param movieId 剧本id
     * @return 剧本实例id对应的key
     */
    public String movieDownloadKey(@NotNull Token token,@NotNull Long movieId){
        return keyPrefix + "md:" + token.getJti() + ":" + movieId;
    }

    /**
     * 设备本地剧本列表
     * @param deviceCode 设备码
     * @return 设备本地剧本列表Key
     */
    public String deviceLocalMovieKey(@NotNull String deviceCode){
        return keyPrefix + "dlm:" + deviceCode;
    }

    /**
     * 签名url时,url对应的对象存储路径。在分段上传的时候,保持同一个id存储同一个对象
     * @param urlId 签名url的id
     * @return the key
     */
    public String signedUrlStorePathKey(@NotNull String urlId){
        return keyPrefix + "url:" + urlId+":path";
    }
}
